In modern networks, data, such as packetized data, is frequently routed between several network nodes during transmission. Typically, each network node includes one or more ports over which data is transmitted and received. Each port has a maximum transmission rate at which it can process data (e.g., packets).
A problem occurs when two network nodes have different transmission rates. For example, a first network node may be capable of transmitting data at a rate of 1 Gigabits/second (Gbs), however a destination network node may only be capable of processing data at a rate of 100 Megabits/second (Mbs). In this case, the destination network node can be overrun with data, particularly broadcast and/or multicast data. This results in packets being lost, and therefore not processed, at the destination network node. Additionally, the lost packets may result in a lower throughput for the network due to additional traffic from retry request(s) for and/or retransmission(s) of required data packets before they are successfully processed by the destination network node.
An approach to addressing this problem is the use of a flow control mechanism. In this case, the receiving node can notify the transmitting node to slow down the data transmission in a response. However, this approach results in a relatively long recovery time since the lost packets occur further along a network path. Additionally, some data, such as broadcast and multicast data, do not generate a response. As a result, there is no way for the receiving node to control the rate or retries of this type of data. Other approaches suggest inserting and removing symbols in the data stream at both ends of the transmission. However, this requires all nodes on a network to support such an approach.
In view of the foregoing, a need exists to overcome one or more of the deficiencies in the related art.